﻿using System;

namespace ToyChat
{
    /// <summary>
    /// This enum specifies a few permissions that can be set 
    /// </summary>
    [Flags]
    public enum ChannelPermissionFlags : long
    {
        /// <summary>
        /// Indicates no permissions at all
        /// </summary>
        None = 0,

        /// <summary>
        /// Indicates the "Speak" permission (Whether or not user can speak in the channel), this is the default value!
        /// </summary>
        Speak = 1,

        /// <summary>
        /// Indicates the permission to ban a user
        /// </summary>
        Ban = 2,

        /// <summary>
        /// Indicates the permissions to edit the message of the day
        /// </summary>
        SetMotD = 4,

        /// <summary>
        /// Indicates the permission to edit the name of the channel
        /// </summary>
        SetName = 8,

        /// <summary>
        /// Indicates the permission to change the password of the channel
        /// </summary>
        SetPassword = 16,

        /// <summary>
        /// Indicates the permission to disable password protection of the channel
        /// </summary>
        SetNoPassword = 32,

        /// <summary>
        /// Indicates the permission to set the default permissions of the channel
        /// </summary>
        SetDefaultPermissions = 64,

        /// <summary>
        /// Indicates the permission to set user permissions for the channel
        /// </summary>
        SetPermissions = 128,

        /// <summary>
        /// Indicates the permission to kick a user
        /// </summary>
        Kick = 256,

        /// <summary>
        /// Indicates the permissions retrieve actual permissions from the channel
        /// </summary>
        GetPermissions = 512,

        /// <summary>
        /// Indicates the permission to hide or unhide the channel from the global channel list
        /// </summary>
        SetHidden = 1024,

        /// <summary>
        /// ALL permissions set (0xffffffffffffffff)
        /// </summary>
        All = -1L,
    }
}